package ts.test.test;

import java.lang.reflect.Constructor;

public class AccessPersonConstructors {
    public static void main(String[] args) {
//        第六章示例6
//        try {
//            //加载Person类
//            Class clz = Class.forName("test.Parson");
//            //调用获取构造方法
//            Object obj = clz.newInstance();
//            //创建对象
//            System.out.println(obj);
//        }catch (Exception e){
//            e.printStackTrace();
//        }

        //第六章示例7
        try {
            //加载Person类
            Class clz = Class.forName("ts.test.test.Parson");
            //获取构造方法
            Constructor c1 = clz.getDeclaredConstructor();
            //调用获取构造方法
            Object obj = clz.newInstance();
            //创建对象
            System.out.println(obj);

            //获取构造方法
            Constructor c2 = clz.getDeclaredConstructor(String.class);
            //调用获取构造方法
            c2.setAccessible(true);
            obj = c2.newInstance("New Person");
            System.out.println(obj);

            //获取构造方法
            Constructor c3 = clz.getDeclaredConstructor(String.class, String.class,String.class);
            //调用获取构造方法
            c3.setAccessible(true);
            obj = c3.newInstance("New Person","beijing", "Hello");
            System.out.println(obj);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}
